// 计算幅度谱函数
// 参数:
//   fftResult - FFT计算结果，复数向量
// 返回值:
//   幅度谱向量（只取前N/2个点）
std::vector<double> computeMagnitude(const std::vector<std::complex<double> > &fftResult) {
    // 计算有效长度（奈奎斯特频率以下的部分）
    size_t validLength = (fftResult.size() % 2 == 0)
                      ? fftResult.size() / 2
                      : (fftResult.size() + 1) / 2;

    std::vector<double> magnitude(validLength);

    for (size_t i = 0; i < validLength; ++i) {
        magnitude[i] = std::abs(fftResult[i]);
    }
    return magnitude;
}
